hhkb
모의해킹

피버팅과터널링_03_터널링과포트포워딩원리

작성자 : Heehyeon Yoo|2025-12-17
# 모의해킹# PNT# Tunneling# PortForwarding# SSH

1. 터널링(Tunneling)의 원리

피버팅이 "이동(Action)"이라면, 터널링은 그 이동을 가능하게 하는 "기술(Technique)"이자 "수단"이다.

1.1 개념 및 정의

  • 정의: 한 네트워크 프로토콜의 패킷을 다른 네트워크 프로토콜의 데이터(Payload)영역에 넣어 캡슐화(Encapsulation)하여 전송하는 기술.
  • 비유: 벽(방화벽)으로 막힌 방 사이에 비밀 통로(Tunnel)를 뚫는 것. 외부에서는 통로의 존재만 보이고, 그 안으로 무엇이 지나가는지는 보이지 않는다.

1.2 필요성(방화벽 우회)

  • 상황: IT망에서 PCI망으로 HTTP(80) 통신을 하고 싶으나, 방화벽이 SSH(22)만 허용하고 나머지는 차단(Drop)하는 경우.
  • 해결:
    1. 공격자는 SSH 터널을 생성한다.
    2. 보내고자 하는 HTTP 패킷을 SSH 패킷 안에 숨긴다(Encapsulation).
    3. 방화벽은 이를 정상적인 SSH 트래픽으로 인식하여 통과시킨다.
    4. 수신측(Pivot Host)에서 SSH 포장을 뜯고 내부의 HTTP 패킷을 꺼내 목적지로 전달한다.

2. 포트 포워딩(Port Forwarding)

터널링을 구현하는 가장 대표적인 기술이 바로 포트 포워딩이다.

  • 정의: 특정 호스트의 포트로 들어오는 트래픽을, 다른 호스트(또는 같은 호스트)의 특정 포트로 전달(Forwarding)해주는 기술.
  • 구성 요소:
    1. 시작 호스트 (Start Host): 공격자(Client). 트래픽을 보내는 주체.
    2. 피벗 호스트 (Pivot Host): 경유지(Middlebox). 두 네트워크를 연결.
    3. 대상 호스트 (Target Host): 최종 목적지(Server).

2.1 작동 흐름

  1. 공격자가 자신의 로컬 포트(예: 1234)에 트래픽을 보낸다.
  2. 이 트래픽은 피벗 호스트와의 연결(터널)을 타고 건너간다.
  3. 피벗 호스트는 도착한 트래픽을 대상 호스트의 실제 포트(예: 80, 3389)로 전달한다.
  4. 결과적으로 공격자는 로컬 포트(1234)를 통해 원격지의 대상 포트(80)와 직접 통신하는 효과를 얻는다.

3. 포트 포워딩의 종류(기준)

포트 포워딩은 기준에 따라 크게 두 가지로 나뉜다. (상세 기술 및 실습은 후속 강의에서 다룸).

3.1 로컬(Local) vs 리모트(Remote)

기준: "누가(Client) 시작점인가?"

  • Local Port Forwarding:
    • 내(Client) 로컬 포트로 들어오는 트래픽을 원격지로 보낸다.
    • 공격자가 내부망의 서비스(RDP, Web)를 내 컴퓨터에서 접속하고 싶을 때 사용.
  • Remote Port Forwarding:
    • 원격지(Server/Pivot) 포트로 들어오는 트래픽을 내(Client) 쪽으로 가져온다.
    • 내부망의 쉘(Reverse Shell)을 내 공격 서버로 연결하거나, 외부에서 내부망 서버를 공개할 때 사용.

3.2 포워드(Forward) vs 리버스(Reverse)

  • 대부분 Forward는 생략하며, 방향성에 따라 구분한다. 리버스 쉘과 유사하게 연결의 방향이 역방향(Outbound)일 때 리버스라 부른다.

4. 포트 포워딩을 "꼭" 써야 하는 이유 (Why?)

단순히 RDP나 SSH로 접속해서 공격 툴을 업로드하고 실행하면 편하지 않나? 왜 복잡하게 포트 포워딩을 하는가?

4.1 작전 보안(OpsSec: Operations Security)

  • 파일 업로드 최소화: 타겟 호스트에 공격 도구(Tool)를 업로드하면 증거(Artifact)가 남고, AV/EDR 솔루션에 탐지될 확률이 매우 높다.
  • 인메모리(In-Memory) 공격: 포트 포워딩을 통해 네트워크 레벨에서 통신만 중계하면, 타겟 디스크에 파일을 쓰지 않고도(Fileless) 공격이 가능하다.

4.2 가용성(Availability)

  • 시스템 보호: 점프 호스트가 매우 중요한 서버(예: Domain Controller)일 수 있다. 여기에 불안정한 공격 도구를 올렸다가 충돌(Crash)이 발생하거나, EDR에 의해 격리(Isolation)되면 심각한 장애를 초래한다.
  • 안전한 중계: 포트 포워딩은 OS가 기본 제공하거나(SSH), 매우 가벼운 에이전트만 사용하므로 시스템 부하가 적고 안정적이다.